require('dotenv').config();
const { testConnection, initializeDatabase } = require('../config/database');

async function initDatabase() {
  console.log('🚀 开始初始化数据库...');
  console.log('📊 数据库配置信息:');
  console.log(`   主机: ${process.env.DB_HOST || '106.13.180.237'}`);
  console.log(`   端口: ${process.env.DB_PORT || '3770'}`);
  console.log(`   用户: ${process.env.DB_USER || 'root'}`);
  console.log(`   数据库: ${process.env.DB_NAME || 'myapp_db'}`);
  console.log('');
  
  try {
    // 测试数据库连接
    const connectionSuccess = await testConnection();
    if (!connectionSuccess) {
      throw new Error('数据库连接测试失败');
    }
    
    // 初始化数据库表（包含最新的外键策略）
    const initSuccess = await initializeDatabase();
    if (!initSuccess) {
      throw new Error('数据库表初始化失败');
    }
    
    console.log('');
    console.log('🎉 数据库初始化完成!');
    console.log('');
    console.log('现在您可以:');
    console.log('1. 运行 npm run dev 启动开发服务器');
    console.log('2. 访问 http://localhost:3000 查看API信息');
    console.log('3. 使用 GET http://localhost:3000/api/users 获取用户数据');
    console.log('');
    
    process.exit(0);
  } catch (error) {
    console.error('❌ 数据库初始化失败:', error.message);
    console.log('');
    console.log('请检查：');
    console.log('1. MySQL 服务是否启动');
    console.log('2. 数据库连接参数是否正确');
    console.log('   - 主机: localhost');
    console.log('   - 端口: 3306');
    console.log('   - 用户: root');
    console.log('   - 密码: 123456');
    console.log('3. 数据库用户是否有足够的权限（创建数据库、表等）');
    console.log('');
    process.exit(1);
  }
}

// 处理进程终止信号
process.on('SIGINT', () => {
  console.log('\n👋 初始化被中断');
  process.exit(0);
});

process.on('SIGTERM', () => {
  console.log('\n👋 初始化被终止');
  process.exit(0);
});

initDatabase();
